Auth0とAmazon EventBridgeをCloudFormationで連携して、Auth0のログをSNSトピックに配信する
Auth0には、Log Streamsの機能があり、ログをAmazon EventBridgeに配信できます。 今回は、CloudFormationでAmazon EventBridgeを構築してみました。 なお、配信先はSNSトピック(メール配信)です。
おすすめの方
- Auth0とAmazon EventBridgeを連携したい方
- Amazon EventBridgeでパートナーイベントソースを利用したい方
- Amazon EventBridgeをCloudFormationで構築したい方
- Amazon EventBridgeでカスタムイベントバスを利用したい方
Auth0テナントとReactアプリを作成する
Single Page Web Applicationsを作成する
適当に作ります。
Reactのサンプルアプリを用意する
Quick Startから、Reactのサンプルアプリをダウンロードして、実行します。
「Allowed Callback URLs」なども設定しておきます。
サンプルアプリが起動しました。
Auth0でStreamsを設定する
「Monitoring」の「Streams」にアクセスして、「Create Log Stream」を選択します。
「Amazon EventBridge」を選択して作成します。
アカウントIDやリージョンなどを設定し、Saveします。
Amazon EventBridgeを設定する
パートナーイベントソースを関連付ける
Amazon EventBridgeの画面を見ると、関連付け待ちのイベントソースがあります。
イベントバスと関連付けを行います。
最後に、イベントバスをコピーしておきます。
CloudFormationテンプレート
次のCloudFormationテンプレートを作成します。
「EventBusName」と「source」は、さきほど関連付けたイベントバスを利用します。
AWSTemplateFormatVersion: '2010-09-09' Description: Auth0 Event Stream Sample Resources: Auth0EventStreamTopic: Type: AWS::SNS::Topic Properties: Subscription: - Protocol: email Endpoint: sample@example.com Auth0EventStreamTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Statement: - Effect: Allow Principal: Service: events.amazonaws.com Action: sns:Publish Resource: '*' Topics: - !Ref Auth0EventStreamTopic Auth0EventStreamEventRule: Type: AWS::Events::Rule Properties: EventBusName: aws.partner/auth0.com/xxx/auth0.logs EventPattern: source: - aws.partner/auth0.com/xxx/auth0.logs Targets: - Id: Auth0EventStreamTopic Arn: !Ref Auth0EventStreamTopic
動作を確認する
新規ユーザ登録してログインする
サンプルアプリで新規ユーザ登録・ログイン・ログアウトなどを適当に繰り返します。
メールが来た!
さいごに
「EventBusName」の指定が必要だと分からずに、しばらーーーーーくハマりました。どなたかの参考になれば幸いです。